﻿/**********************************************************************
 * @file   GUIPostCurvePlotDialog.h
 * @brief  后处理曲线窗口
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2025-02-25
 *********************************************************************/
#ifndef _GUIPostCurvePlotDialog_H
#define _GUIPostCurvePlotDialog_H

#include "GUIPostDialogAPI.h"
#include "GUIWidget/GUIDialogBase.h"

namespace Ui {
class GUIPostCurvePlotDialog;
}

namespace Core {
    class FITKActionOperator;
}

namespace Acoustics {
    class FITKAbstractSEASubSys;
}

namespace GUI
{
    class GUIAbsPostCurvePlotWidget;
    /**
     * @brief  后处理曲线窗口
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date   2025-02-25
     */
    class GUIPostDialogAPI GUIPostCurvePlotDialog : public GUIDialogBase
    {
        Q_OBJECT
    public:
        /**
         * @brief  create object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2025-02-25
         */
        GUIPostCurvePlotDialog(Core::FITKActionOperator* oper, QWidget *parent = nullptr);
        /**
         * @brief    Destroy object
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-02-25
         */
        ~GUIPostCurvePlotDialog();
        /**
         * @brief    初始化
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-02-25
         */
        void init(QString objName);

    private slots:
        /**
         * @brief  CaseList slot
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2025-02-25
         */
        void on_comboBoxCaseList_currentIndexChanged(int index);
        /**
         * @brief    DataList slot
         * @param[i] index 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-02-25
         */
        void on_comboBoxDataList_currentIndexChanged(int index);

    private:
        /**
         * @brief    初始化下拉框数据
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-02-25
         */
        void initComboBoxDataList(QString objName);
        void initComboBoxCaseList();
        /**
         * @brief    更新曲线
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-02-25
         */
        void updateCurvePlot();

    private:
        /**
         * @brief  ui object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2025-02-25
         */
        Ui::GUIPostCurvePlotDialog *_ui{};
        /**
         * @brief 操作器对象
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        Core::FITKActionOperator* _oper = nullptr;
        /**
         * @brief  曲线窗口
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2025-02-25
         */
        GUIAbsPostCurvePlotWidget* _curvePlotDialog = nullptr;
        /**
         * @brief  后处理类型
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2025-02-25
         */
        QString _subSystemType{};
    };
}


#endif // GUIPostCurvePlotDialog_H
